﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

using MM.Entities;
using MM.Business;

namespace MM
{
    public partial class frmDuyetPhieuNK : Form
    {
        string _sConn = "";
        string _nguoitao = "";
        string _matau = "";
        List<CHI_TIET_PNH> lstCT = new List<CHI_TIET_PNH>();
        PHIEU_NHAP_HANG pnhObj = new PHIEU_NHAP_HANG();
        public frmDuyetPhieuNK(string sConn)
        {
            InitializeComponent();
            _sConn = sConn;
            _nguoitao = frmDangNhap.objTaiKhoan._soCMND;
            _matau = frmDangNhap.objTau._tenTau2KiTu;

            this.cmdDuyet.Visible = false;            
           
            this.HienthiPHIEU_NHAP_HANG_MAX(_matau);
            this.HienthiCHI_TIET_PNH(this.txtMaPhieuNhapHang.Text.Trim());
        }

        private void txtMaPhieuYeuCau_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                string sophieuGR = this.txtMaPhieuNhapHang.Text.Trim();
                if (sophieuGR.Length == 10)
                {
                    this.HienthiCHI_TIET_PNH(sophieuGR);
                    this.HienthiPHIEU_NHAP_HANG(sophieuGR);
                }
            }
        }
        private void HienthiPHIEU_NHAP_HANG_MAX(string matau)
        {
            clsPHIEU_NHAP_HANG pnhCtrl = new clsPHIEU_NHAP_HANG(_sConn);
            List<PHIEU_NHAP_HANG> lst = new List<PHIEU_NHAP_HANG>();
            lst = pnhCtrl.usp_SelectPHIEU_NHAP_HANG_MAX(matau);
            if (lst.Count > 0)
            {
                pnhObj = new PHIEU_NHAP_HANG();
                pnhObj = lst[0];
                
                    this.txtNgayThucHien.Text = lst[0].NgayNhap.Day.ToString() + "/" + lst[0].NgayNhap.Month.ToString() + "/" + lst[0].NgayNhap.Year.ToString();
                    this.txtNguoiThucHien.Text = lst[0].NguoiNhap;
                    this.txtGhiChu.Text = lst[0].GhiChu;
               

                //if (lst[0].NgayExport.Year > 2011)
                if (lst[0].NgayExport.HasValue)
                {
                    DateTime dE = (DateTime)lst[0].NgayExport;
                    this.txtNgayDuyet.Text = dE.Day.ToString() + "/" + dE.Month.ToString() + "/" + dE.Year.ToString();
                    this.cmdDuyet.Visible = false;                    
                    this.txtMaPhieuNhapHang.Text = lst[0].MaPhieuNhapHang;
                }
                else
                {
                    this.txtNgayDuyet.Text = "";
                    this.cmdDuyet.Visible = true;                    
                    this.txtMaPhieuNhapHang.Text = lst[0].MaPhieuNhapHang;
                }
            }


        }
        private void HienthiCHI_TIET_PNH(string MaPhieuNhapHang)
        {
            lstCT.Clear();
            clsCHI_TIET_PNH ctCtrl = new clsCHI_TIET_PNH(_sConn);
            lstCT = ctCtrl.usp_SelectCHI_TIET_PNH_ByMaPhieuNhapHang(MaPhieuNhapHang);
            lstCT.RemoveAll(delegate(CHI_TIET_PNH x) { return x.TinhTrang == 1; });
            this.gridControl1.DataSource = lstCT;
            this.gridControl1.RefreshDataSource();
            if (lstCT.Count == 0)
            {
                this.cmdDuyet.Visible = false;
            }
        }
        private void HienthiPHIEU_NHAP_HANG(string MaPhieuNhapHang)
        {
            clsPHIEU_NHAP_HANG pnhCtrl = new clsPHIEU_NHAP_HANG(_sConn);
            List<PHIEU_NHAP_HANG> lst = new List<PHIEU_NHAP_HANG>();
            lst = pnhCtrl.usp_SelectPHIEU_NHAP_HANG(MaPhieuNhapHang);
            if (lst.Count > 0)
            {
                pnhObj = new PHIEU_NHAP_HANG();
                pnhObj = lst[0];

                this.txtNgayThucHien.Text = lst[0].NgayNhap.Day.ToString() + "/" + lst[0].NgayNhap.Month.ToString() + "/" + lst[0].NgayNhap.Year.ToString();
                this.txtNguoiThucHien.Text = lst[0].NguoiNhap;
                this.txtGhiChu.Text = lst[0].GhiChu;

                //if (lst[0].NgayExport.Year > 2011)
                if (lst[0].NgayExport.HasValue)
                {
                   // this.txtNgayDuyet.Text = lst[0].NgayExport.Day.ToString() + "/" + lst[0].NgayExport.Month.ToString() + "/" + lst[0].NgayExport.Year.ToString();
                    DateTime dE = (DateTime)lst[0].NgayExport;
                    this.txtNgayDuyet.Text = dE.Day.ToString() + "/" + dE.Month.ToString() + "/" + dE.Year.ToString();
                    this.cmdDuyet.Visible = false;                    
                }
                else
                {
                    this.txtNgayDuyet.Text = "";
                    this.cmdDuyet.Visible = true;                    
                }
                if (pnhObj.TinhTrang == 1)
                    this.cmdDuyet.Visible = false;
            }

        }

        private void button1_Click(object sender, EventArgs e)
        {
           
            if (this.txtGhiChu.Text.Trim() != "")
            {
                string filepath = "";
                clsTHAM_SO tsCtrl = new clsTHAM_SO(_sConn);
                THAM_SO tsObj = new THAM_SO();
                tsObj = tsCtrl.SelectTHAM_SO("vDuyetPNK");

                if (tsObj != null && tsObj.DaXoa == 0)
                {
                    filepath = tsObj.GiaTri;
                }

                if (filepath == "")
                {
                    FolderBrowserDialog dg = new FolderBrowserDialog();
                    dg.ShowDialog();
                    filepath = dg.SelectedPath;
                }
                if (filepath != "")
                {
                    clsPHIEU_NHAP_HANG pnhCtrl = new clsPHIEU_NHAP_HANG(_sConn);
                    PHIEU_NHAP_HANG obj = new PHIEU_NHAP_HANG();
                    obj = pnhObj;
                    
                    obj.NguoiExport = _nguoitao;
                    obj.NgayExport = DateTime.Today;
                    obj.NgayNhap = DateTime.Today;
                    obj.NguoiNhap = _nguoitao;
                    obj.GhiChu = this.txtGhiChu.Text.Trim();
                    
                    if (obj.MaPhieuNhapHang.Length == 10)
                    {
                        int kq = pnhCtrl.usp_UpdatePHIEU_NHAP_HANG_Duyet(obj);
                        if (kq > 0)
                        {
                            // xuat file Csv
                            string y = DateTime.Today.Year.ToString();
                            string m = DateTime.Today.Month.ToString();
                            string d = DateTime.Today.Day.ToString();
                            m = Convert.ToString("0" + m).Substring(m.Length - 1, 2);
                            d = Convert.ToString("0" + d).Substring(d.Length - 1, 2);
                            filepath = filepath + "\\" + obj.MaPhieuNhapHang + "_" + y + m + d + ".csv";
                            // Xuat file Excel PR
                            pnhCtrl.CsvExportPHIEU_NHAP_HANG(obj, lstCT, filepath);

                            // thong bao cho nguoi dung
                            //MessageBox.Show("DUYỆT THÀNH CÔNG!" + "\n" + "GỬI EMAIL ĐÍNH KÈM FILE TẠI: " + filepath + " VỀ ĐỊA CHỈ: vmm@vitranschart.com.vn");
                            this.lblThongBao.Text = "DUYỆT THÀNH CÔNG!" + "\r\n" + "GỬI EMAIL ĐÍNH KÈM FILE TẠI: " + filepath + " VỀ ĐỊA CHỈ: vmm@vitranschart.com.vn";

                            this.cmdDuyet.Visible = false;
                        }
                        else
                            MessageBox.Show("DUYỆT KHÔNG THÀNH CÔNG");
                    }
                }
            }
            else
                MessageBox.Show("Bạn phải nhập Diễn giải cho Phiếu nhập kho");
        }

        private void cmdGoDuyet_Click(object sender, EventArgs e)
        {
            //// điều kiện hủy phiếu nhập kho:
            //// * số lượng tồn kho đủ với số lg cần hủy nhập
            //if (MessageBox.Show("CẢNH BÁO", "ABC", MessageBoxButtons.YesNo) == DialogResult.Yes)
            //{
            //    clsCHI_TIET_PNH pnhCtrl = new clsCHI_TIET_PNH(_sConn);
            //    for (int i = 0; i < lstCT.Count; i++)
            //    {
            //        lstCT[i].NgayNhap = DateTime.Today;
            //        lstCT[i].NguoiNhap = _nguoitao;
            //    }
            //    if (pnhCtrl.usp_UpdateCHI_TIET_PNH_Cancelation(lstCT) > 0)
            //    {
            //        MessageBox.Show("HỦY PHIẾU THÀNH CÔNG");
            //    }
            //    else
            //        MessageBox.Show("HỦY PHIẾU KHÔNG THÀNH CÔNG");
            //}
        }

        private void cmdXuatLai_Click(object sender, EventArgs e)
        {
            if (pnhObj.SoLanExport == 0) // chua duoc duyet
            {
                MessageBox.Show("XUẤT FILE KHÔNG THÀNH CÔNG!\nPHIẾU CHƯA ĐƯỢC DUYỆT");
                return;
            }
            string filepath = "";
            clsTHAM_SO tsCtrl = new clsTHAM_SO(_sConn);
            THAM_SO tsObj = new THAM_SO();
            tsObj = tsCtrl.SelectTHAM_SO("vDuyetPNK");

            if (tsObj != null && tsObj.DaXoa == 0)
            {
                filepath = tsObj.GiaTri;
            }

            if (filepath == "")
            {
                FolderBrowserDialog dg = new FolderBrowserDialog();
                dg.ShowDialog();
                filepath = dg.SelectedPath;
            }
            if (filepath != "")
            {
                clsPHIEU_NHAP_HANG pnhCtrl = new clsPHIEU_NHAP_HANG(_sConn);
                
                
                if (pnhObj.MaPhieuNhapHang.Length == 10)
                {
                    pnhObj.SoLanExport += 1;
                    int kq = pnhCtrl.usp_UpdatePHIEU_NHAP_HANG(pnhObj);
                    if (kq > 0)
                    {
                        // xuat file Csv
                        string y = DateTime.Today.Year.ToString();
                        string m = DateTime.Today.Month.ToString();
                        string d = DateTime.Today.Day.ToString();
                        m = Convert.ToString("0" + m).Substring(m.Length - 1, 2);
                        d = Convert.ToString("0" + d).Substring(d.Length - 1, 2);
                        filepath = filepath + "\\" + pnhObj.MaPhieuNhapHang + "_" + y + m + d + ".csv";
                        // Xuat file Excel PR
                        pnhCtrl.CsvExportPHIEU_NHAP_HANG(pnhObj, lstCT, filepath);

                        // thong bao cho nguoi dung
                        //MessageBox.Show("DUYỆT THÀNH CÔNG!" + "\n" + "GỬI EMAIL ĐÍNH KÈM FILE TẠI: " + filepath + " VỀ ĐỊA CHỈ: vmm@vitranschart.com.vn");
                        this.lblThongBao.Text = "XUẤT FILE THÀNH CÔNG!" + "\r\n" + "GỬI EMAIL ĐÍNH KÈM FILE TẠI: " + filepath + " VỀ ĐỊA CHỈ: vmm@vitranschart.com.vn";

                        this.cmdDuyet.Visible = false;
                    }
                    else
                        MessageBox.Show("XUẤT FILE KHÔNG THÀNH CÔNG");
                }
            }
        }

        private void frmDuyetPhieuNK_Paint(object sender, PaintEventArgs e)
        {
            //Common.PaintGradientColor(Color.LightYellow, Color.LightSkyBlue, System.Drawing.Drawing2D.LinearGradientMode.Vertical, this.Width, this.Height, this);            
        }

        private void label1_Click(object sender, EventArgs e)
        {
            frmTimPhieuNK f = new frmTimPhieuNK(_sConn);
            f.chonPNK += new frmTimPhieuNK.ChonPhieuNhapKho(GetPhieuNhapKho);
            f.Show(this);
        }

        private void GetPhieuNhapKho(object sender, ChonPhieuNKEventArgs e)
        {
            string mapnk = e.MaPhieuNhapKho;

            this.HienthiPHIEU_NHAP_HANG(mapnk);
            this.HienthiCHI_TIET_PNH(mapnk);            
        }

        private void frmDuyetPhieuNK_Load(object sender, EventArgs e)
        {
            Common.SetColor(this);
            this.lblThongBao.BackColor = this.BackColor;
        }

    }
}